
#include "iot_gpio.h"
#include "iot_gpio_ex.h"

#include "cmsis_os2.h"
#include "tm1637.h"

#include "iot_errno.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define IIC_SdaModeOut()			IoTGpioSetDir(IIC_SDA,IOT_GPIO_DIR_OUT)		
#define IIC_SdaModeIn()				IoTGpioSetDir(IIC_SDA,IOT_GPIO_DIR_IN)
#define IIC_SdaOutput_H()			IoTGpioSetOutputVal(IIC_SDA,1)
#define IIC_SdaOutput_L()			IoTGpioSetOutputVal(IIC_SDA,0)

#define IIC_SclModeOut()			IoTGpioSetDir(IIC_CLK,IOT_GPIO_DIR_OUT)		
#define IIC_SclModeIn()				IoTGpioSetDir(IIC_CLK,IOT_GPIO_DIR_IN)	
#define IIC_SclOutput_H()			IoTGpioSetOutputVal(IIC_CLK,1)
#define IIC_SclOutput_L()			IoTGpioSetOutputVal(IIC_CLK,0)
#define uint8_t unsigned char
#define delay_us(v) osDelay(1);
/*
说明：标准IIC协议传输数据时为MSB方式，即高位在前低位在后，但有些器件为LSB方式，
即低位在前，高位在后，如TM1637数码管驱动芯片。
*/
#define IIC_LSB//定义了则IIC在数据传输时低位在前

void IIC_SetPort(int sda,int clk);
int IIC_SdaRead(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_Ack(void);
void IIC_NoAck(void);
uint8_t IIC_WaitAck(void);
void IIC_WriteByte(uint8_t u8Data);
uint8_t IIC_ReadByte(void);
